<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['controls', 'charteditor']}]}"></script>
<script src="http://jquery-csv.googlecode.com/git/src/jquery.csv.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
$(function() {
  google.load("visualization", "1", {packages:["corechart"]});

    var csv = $('#textInput').val();
    var data = $.csv.toArrays(csv, {
        onParseValue: $.csv.hooks.castToScalar
    });

    // Convert data for bar chart (averaging all digits)
    var timeData = {};  // type -> table
    var funcRowMap;

    for (var i = 1; i < data.length; i++) {
      var type = data[i][0];
      var func = data[i][1];
      var digit = data[i][2];
      var time = data[i][3];
      if (timeData[type] == null) {
        timeData[type] = [["Function", "Time (ns)"/*, { role: "style" }*/]];
        if (digit != 0)
          funcRowMap = {};
      }

      var table = timeData[type];
      
      if (digit != 0) {
        if (funcRowMap[func] == null)
          funcRowMap[func] = table.push([func, []/*, defaultColors[table.length - 1]*/]) - 1;
        
        table[funcRowMap[func]][1].push(time);
      }
      else
        table.push([func, time]);
    }

    // averaging
    for (var type in timeData) {
      var table = timeData[type];
      for (var i = 0; i < table.length; i++) {
        if (typeof(table[i][1]) == "object") {
          var sum = 0;
          for (var j = 0; j < table[i][1].length; j++)
            sum += table[i][1][j];
          table[i][1] = sum / table[i][1].length;
        }
      }
    }

    // Convert data for drawing line chart per sequential digit
    var timeDigitData = {}; // type -> table
    var funcColumnMap;

    for (var i = 1; i < data.length; i++) {
      var type = data[i][0];
      var func = data[i][1];
      var digit = data[i][2];
      var time = data[i][3];

      if (digit == 0)
        continue;

      if (timeDigitData[type] == null) {
        timeDigitData[type] = [["Digit"]];
        funcColumnMap = {};
      }

      var table = timeDigitData[type];

      if (funcColumnMap[func] == null)
        funcColumnMap[func] = table[0].push(func) - 1;

      var row;
      for (row = 1; row < table.length; row++)
        if (table[row][0] == digit)
          break;

      if (row == table.length)
        table.push([digit]);

    table[row][funcColumnMap[func]] = time;
  }

  for (var type in timeData) {
    $("#main").append(
      $("<a>", {name: type}),
      $("<h2>", {style: "padding-top: 70px; margin-top: -70px;"}).append(type)
    );

    $("#section").append($("<li>").append($("<a>", {href: "#" + type}).append(type)));

    drawTable(type, timeData[type]);
    drawBarChart(type, timeData[type]);
    if (timeDigitData[type] != null)
      drawDigitChart(type, timeDigitData[type]);
  }

  // Image download button
  $(".chart").each(function() {
    var chart = $(this);
    var d = $("#downloadDD").clone().css("display", "");
    $('li a', d).each(function() {
          $(this).click(function() {
              var svg = chart[0].getElementsByTagName('svg')[0].parentNode.innerHTML;
              svg=sanitize(svg);
              $('#imageFilename').val($("#title").html() + "_" + chart.data("filename"));
              $('#imageGetFormTYPE').val($(this).attr('dltype'));
              $('#imageGetFormSVG').val(svg);
              $('#imageGetForm').submit();
          });
      });   
    $(this).after(d);
  });

  // Show markdown button
  $(".tablechart").each(function() {
    var chart = $(this);
    var type = chart.data("type");
    var d = $("#showMD").clone().css("display", "");
    $('.collapse', d).first().attr("id", "tableMD" + type);
    $('button', d).first().attr("data-target","#tableMD" + type).click(function() {
      var markdown = DataTableToMarkdown(chart.data("data"));
      $('textarea', d).val(markdown).attr("rows", markdown.split("\n").length);
    });
    $(this).after(d);
  });

  // Add configurations
  var thisConfig = "corei7920@2.67_win32_vc2013";
  var configurations = ["corei7920@2.67_cygwin32_gcc4.8","corei7920@2.67_cygwin64_gcc4.8","corei7920@2.67_win32_vc2013","corei7920@2.67_win64_vc2013"];

  for (var i in configurations) {
    var c = configurations[i];
    $("#configuration").append($("<li>", {class : (c == thisConfig ? "active" : "")}).append($("<a>", {href: c + ".html"}).append(c)));
  }
});

function drawTable(type, timeData) {
  var data = google.visualization.arrayToDataTable(timeData);
    data.addColumn('number', 'Speedup');
    data.sort([{ column: 1, desc: true }]);
    var formatter1 = new google.visualization.NumberFormat({ fractionDigits: 3 });
    formatter1.format(data, 1);

    var div = document.createElement("div");
    div.className = "tablechart";
    $(div).data("type", type).data("data", data);
    $("#main").append(div);
    var table = new google.visualization.Table(div);
    redrawTable(0);
    table.setSelection([{ row: 0, column: null}]);

    function redrawTable(selectedRow) {
      // Compute relative time using the first row as basis
      var basis = data.getValue(selectedRow, 1);
      for (var rowIndex = 0; rowIndex < data.getNumberOfRows(); rowIndex++)
        data.setValue(rowIndex, 2, basis / data.getValue(rowIndex, 1));

      var formatter = new google.visualization.NumberFormat({suffix: 'x'});
      formatter.format(data, 2); // Apply formatter to second column

      table.draw(data);
    }

    google.visualization.events.addListener(table, 'select',
    function() {
      var selection = table.getSelection();
      if (selection.length > 0) {
        var item = selection[0];
        if (item.row != null) {
          redrawTable(item.row);

          // Also update markdown
          var markdown = DataTableToMarkdown(data);
          $('textarea', $("#tableMD" + type)).val(markdown);
        }
      }
    });
}

function drawBarChart(type, timeData) {
  var defaultColors = ["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395","#994499","#22aa99","#aaaa11","#6633cc","#e67300","#8b0707","#651067","#329262","#5574a6","#3b3eac","#b77322","#16d620","#b91383","#f4359e","#9c5935","#a9c413","#2a778d","#668d1c","#bea413","#0c5922","#743411"];

  var data = google.visualization.arrayToDataTable(timeData);
  data.addColumn({ type: "string", role: "style" })
  for (var rowIndex = 0; rowIndex < data.getNumberOfRows(); rowIndex++)
    data.setValue(rowIndex, 2, defaultColors[rowIndex]);

  data.sort([{ column: 1, desc: true }]);
  var options = { 
    title: type,
    chartArea: {'width': '70%', 'height': '70%'},
    width: 800,
    height: 300,
    legend: { position: "none" },
    hAxis: { title: "Time (ns)" }
  };
  var div = document.createElement("div");
  div.className = "chart";
  $(div).data("filename", type + "_time");
  $("#main").append(div);
  var chart = new google.visualization.BarChart(div);

  chart.draw(data, options);
}

function drawDigitChart(type, timeDigitData) {
  var data = google.visualization.arrayToDataTable(timeDigitData);

  var options = { 
    title: type,
    chartArea: {'width': '70%', 'height': '80%'},
    hAxis: {
      title: "Digit",
      gridlines: { count: timeDigitData.length - 1 },
      maxAlternation: 1,
      minTextSpacing: 0
    },
    vAxis: {
      title: "Time (ns) in log scale",
      logScale: true,
      minorGridlines: { count: 10 },
      baseline: 0
    },
    width: 800,
    height: 600
  };
  var div = document.createElement("div");
  div.className = "chart";
  $(div).data("filename", type + "_timedigit");
  $("#main").append(div);
  var chart = new google.visualization.LineChart(div);

  chart.draw(data, options);
}

// http://jsfiddle.net/P6XXM/
function sanitize(svg) {
    svg = svg
        .replace(/\<svg/,'<svg xmlns="http://www.w3.org/2000/svg" version="1.1"')
        .replace(/zIndex="[^"]+"/g, '')
        .replace(/isShadow="[^"]+"/g, '')
        .replace(/symbolName="[^"]+"/g, '')
        .replace(/jQuery[0-9]+="[^"]+"/g, '')
        .replace(/isTracker="[^"]+"/g, '')
        .replace(/url\([^#]+#/g, 'url(#')
        .replace('<svg xmlns:xlink="http://www.w3.org/1999/xlink" ', '<svg ')
        .replace(/ href=/g, ' xlink:href=')
    /*.replace(/preserveAspectRatio="none">/g, 'preserveAspectRatio="none"/>')*/
    /* This fails in IE < 8
    .replace(/([0-9]+)\.([0-9]+)/g, function(s1, s2, s3) { // round off to save weight
    return s2 +'.'+ s3[0];
    })*/

    // IE specific
        .replace(/id=([^" >]+)/g, 'id="$1"')
        .replace(/class=([^" ]+)/g, 'class="$1"')
        .replace(/ transform /g, ' ')
        .replace(/:(path|rect)/g, '$1')
        .replace(/<img ([^>]*)>/gi, '<image $1 />')
        .replace(/<\/image>/g, '') // remove closing tags for images as they'll never have any content
        .replace(/<image ([^>]*)([^\/])>/gi, '<image $1$2 />') // closes image tags for firefox
        .replace(/width=(\d+)/g, 'width="$1"')
        .replace(/height=(\d+)/g, 'height="$1"')
        .replace(/hc-svg-href="/g, 'xlink:href="')
        .replace(/style="([^"]+)"/g, function (s) {
            return s.toLowerCase();
        });

    // IE9 beta bugs with innerHTML. Test again with final IE9.
    svg = svg.replace(/(url\(#highcharts-[0-9]+)&quot;/g, '$1')
        .replace(/&quot;/g, "'");
    if (svg.match(/ xmlns="/g).length == 2) {
        svg = svg.replace(/xmlns="[^"]+"/, '');
    }

    return svg;
}

function DataTableToMarkdown(dataTable) {
  var s = "|";
  var columnCount = dataTable.getNumberOfColumns();
  var rowCount = dataTable.getNumberOfRows();

  // compute columnWidths & padding
  var columnWidths = new Array();
  var columnPadRight = new Array();
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
    columnWidths.push(dataTable.getColumnLabel(columnIndex).length);
    columnPadRight.push(dataTable.getColumnType(columnIndex) == 'number');
  }
  for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
    for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
      columnWidths[columnIndex] = Math.max(columnWidths[columnIndex], dataTable.getFormattedValue(rowIndex, columnIndex).length);

  function pad(columnIndex, s) {
    var spaces = Array(columnWidths[columnIndex] - s.length + 1).join(' ');
    return columnPadRight[columnIndex] ? spaces + s : s + spaces;
  }

  // header
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
    s += pad(columnIndex, dataTable.getColumnLabel(columnIndex)) + "|";
  s += "\n|";

  // header line
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
    if (columnPadRight[columnIndex])
      s += Array(columnWidths[columnIndex]).join("-") + ":|";
    else
      s += Array(columnWidths[columnIndex] + 1).join("-") + "|";
  }
  s += "\n";

  // contents
  for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {
    s += "|";
    for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
      s += pad(columnIndex, dataTable.getFormattedValue(rowIndex, columnIndex)) + "|";
    s += "\n";
  }

  return s;
}
</script>
<style type="text/css">
@media (min-width: 800px) {
  .container {
    max-width: 800px;
  }
}
textarea {
  font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
.tablechart {
  width: 700px;
  margin: auto;
  padding-top: 20px;
  padding-bottom: 20px;
}
.chart {
  padding-top: 20px;
  padding-bottom: 20px;
}
body { padding-top: 70px; }
</style>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="https://github.com/miloyip/itoa-benchmark"><span class="glyphicon glyphicon-home"></span> itoa-benchmark</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Configuration <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" id="configuration">
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Section <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" id="section">
          </ul>
        </li>
      </ul>
      <p class="navbar-text navbar-right">Developed by <a href="https://github.com/miloyip" class="navbar-link">Milo Yip</a></p>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
<div class="page-header">
<h1 id="title">corei7920@2.67_win32_vc2013</h1>
</div>
<div id="main"></div>
<h2>Source CSV</h2>
<textarea id="textInput" class="form-control" rows="5" readonly>
Type,Function,Digit,Time(ns)
u32toa_sequential,null,1,2.137861
u32toa_sequential,null,2,2.137861
u32toa_sequential,null,3,2.137861
u32toa_sequential,null,4,2.137861
u32toa_sequential,null,5,2.137861
u32toa_sequential,null,6,2.137861
u32toa_sequential,null,7,2.137861
u32toa_sequential,null,8,2.137861
u32toa_sequential,null,9,2.137861
u32toa_sequential,null,10,2.137861
u32toa_random,null,0,2.498769
u32toa_sequential,branchlut,1,5.942335
u32toa_sequential,branchlut,2,6.819701
u32toa_sequential,branchlut,3,7.708561
u32toa_sequential,branchlut,4,8.279424
u32toa_sequential,branchlut,5,11.716094
u32toa_sequential,branchlut,6,12.240981
u32toa_sequential,branchlut,7,13.708366
u32toa_sequential,branchlut,8,15.079969
u32toa_sequential,branchlut,9,16.206369
u32toa_sequential,branchlut,10,16.183381
u32toa_random,branchlut,0,20.668676
u32toa_sequential,count,1,9.628039
u32toa_sequential,count,2,12.122211
u32toa_sequential,count,3,15.562712
u32toa_sequential,count,4,19.459136
u32toa_sequential,count,5,21.390108
u32toa_sequential,count,6,24.186952
u32toa_sequential,count,7,26.941651
u32toa_sequential,count,8,31.244193
u32toa_sequential,count,9,33.493162
u32toa_sequential,count,10,36.496896
u32toa_random,count,0,32.596256
u32toa_sequential,countlut,1,7.149192
u32toa_sequential,countlut,2,6.915484
u32toa_sequential,countlut,3,9.808110
u32toa_sequential,countlut,4,14.520600
u32toa_sequential,countlut,5,14.447805
u32toa_sequential,countlut,6,15.240883
u32toa_sequential,countlut,7,14.995680
u32toa_sequential,countlut,8,15.302184
u32toa_sequential,countlut,9,17.267637
u32toa_sequential,countlut,10,17.489852
u32toa_random,countlut,0,21.847181
u32toa_sequential,lut,1,6.413584
u32toa_sequential,lut,2,8.195135
u32toa_sequential,lut,3,10.367478
u32toa_sequential,lut,4,11.777394
u32toa_sequential,lut,5,15.715963
u32toa_sequential,lut,6,16.961133
u32toa_sequential,lut,7,19.045357
u32toa_sequential,lut,8,19.493618
u32toa_sequential,lut,9,22.539496
u32toa_sequential,lut,10,23.945580
u32toa_random,lut,0,31.743028
u32toa_sequential,naive,1,8.195135
u32toa_sequential,naive,2,11.440240
u32toa_sequential,naive,3,14.290722
u32toa_sequential,naive,4,18.030064
u32toa_sequential,naive,5,21.983958
u32toa_sequential,naive,6,25.010680
u32toa_sequential,naive,7,28.213641
u32toa_sequential,naive,8,31.447252
u32toa_sequential,naive,9,34.489298
u32toa_sequential,naive,10,37.887655
u32toa_random,naive,0,34.928748
u32toa_sequential,sprintf,1,123.995962
u32toa_sequential,sprintf,2,147.263403
u32toa_sequential,sprintf,3,169.147748
u32toa_sequential,sprintf,4,194.882542
u32toa_sequential,sprintf,5,220.375965
u32toa_sequential,sprintf,6,242.007444
u32toa_sequential,sprintf,7,270.768960
u32toa_sequential,sprintf,8,291.013511
u32toa_sequential,sprintf,9,311.273388
u32toa_sequential,sprintf,10,338.464073
u32toa_random,sprintf,0,251.460393
u32toa_sequential,sse2,1,6.018961
u32toa_sequential,sse2,2,7.727718
u32toa_sequential,sse2,3,7.110880
u32toa_sequential,sse2,4,7.095554
u32toa_sequential,sse2,5,13.156660
u32toa_sequential,sse2,6,12.578134
u32toa_sequential,sse2,7,12.581966
u32toa_sequential,sse2,8,14.639370
u32toa_sequential,sse2,9,10.605019
u32toa_sequential,sse2,10,11.133737
u32toa_random,sse2,0,19.778666
u32toa_sequential,vc,1,28.734696
u32toa_sequential,vc,2,42.676771
u32toa_sequential,vc,3,57.473224
u32toa_sequential,vc,4,71.928692
u32toa_sequential,vc,5,86.671507
u32toa_sequential,vc,6,103.751410
u32toa_sequential,vc,7,117.651341
u32toa_sequential,vc,8,133.750433
u32toa_sequential,vc,9,148.144601
u32toa_sequential,vc,10,166.607601
u32toa_random,vc,0,111.414762
i32toa_sequential,null,1,2.314101
i32toa_sequential,null,2,2.314101
i32toa_sequential,null,3,2.314101
i32toa_sequential,null,4,2.314101
i32toa_sequential,null,5,2.314101
i32toa_sequential,null,6,2.314101
i32toa_sequential,null,7,2.314101
i32toa_sequential,null,8,2.314101
i32toa_sequential,null,9,2.314101
i32toa_sequential,null,10,2.314101
i32toa_random,null,0,2.143225
i32toa_sequential,branchlut,1,8.605084
i32toa_sequential,branchlut,2,8.773661
i32toa_sequential,branchlut,3,10.122276
i32toa_sequential,branchlut,4,9.892398
i32toa_sequential,branchlut,5,15.451604
i32toa_sequential,branchlut,6,15.888371
i32toa_sequential,branchlut,7,17.378744
i32toa_sequential,branchlut,8,18.160328
i32toa_sequential,branchlut,9,19.489787
i32toa_sequential,branchlut,10,19.823109
i32toa_random,branchlut,0,26.908702
i32toa_sequential,count,1,13.463163
i32toa_sequential,count,2,14.823272
i32toa_sequential,count,3,18.758010
i32toa_sequential,count,4,22.056753
i32toa_sequential,count,5,24.642876
i32toa_sequential,count,6,28.309423
i32toa_sequential,count,7,30.807426
i32toa_sequential,count,8,34.573587
i32toa_sequential,count,9,37.696090
i32toa_sequential,count,10,39.899084
i32toa_random,count,0,39.275349
i32toa_sequential,countlut,1,12.926782
i32toa_sequential,countlut,2,9.133802
i32toa_sequential,countlut,3,14.030194
i32toa_sequential,countlut,4,14.608720
i32toa_sequential,countlut,5,17.033928
i32toa_sequential,countlut,6,18.309749
i32toa_sequential,countlut,7,19.420823
i32toa_sequential,countlut,8,19.485955
i32toa_sequential,countlut,9,21.340301
i32toa_sequential,countlut,10,21.501215
i32toa_random,countlut,0,26.966172
i32toa_sequential,lut,1,8.206629
i32toa_sequential,lut,2,9.995843
i32toa_sequential,lut,3,12.432545
i32toa_sequential,lut,4,14.229422
i32toa_sequential,lut,5,19.141139
i32toa_sequential,lut,6,20.187082
i32toa_sequential,lut,7,23.225297
i32toa_sequential,lut,8,23.834473
i32toa_sequential,lut,9,27.907137
i32toa_sequential,lut,10,28.271110
i32toa_random,lut,0,38.217146
i32toa_sequential,naive,1,10.313840
i32toa_sequential,naive,2,13.578102
i32toa_sequential,naive,3,18.026233
i32toa_sequential,naive,4,21.803888
i32toa_sequential,naive,5,24.658201
i32toa_sequential,naive,6,31.872525
i32toa_sequential,naive,7,31.941488
i32toa_sequential,naive,8,35.155943
i32toa_sequential,naive,9,38.052401
i32toa_sequential,naive,10,43.504330
i32toa_random,naive,0,40.912078
i32toa_sequential,sprintf,1,133.846216
i32toa_sequential,sprintf,2,155.642441
i32toa_sequential,sprintf,3,180.473050
i32toa_sequential,sprintf,4,205.154238
i32toa_sequential,sprintf,5,228.919748
i32toa_sequential,sprintf,6,255.033840
i32toa_sequential,sprintf,7,285.120983
i32toa_sequential,sprintf,8,312.365306
i32toa_sequential,sprintf,9,333.058119
i32toa_sequential,sprintf,10,359.984445
i32toa_random,sprintf,0,265.054969
i32toa_sequential,sse2,1,8.087859
i32toa_sequential,sse2,2,9.149127
i32toa_sequential,sse2,3,9.758303
i32toa_sequential,sse2,4,9.267897
i32toa_sequential,sse2,5,16.198706
i32toa_sequential,sse2,6,16.156562
i32toa_sequential,sse2,7,17.459202
i32toa_sequential,sse2,8,17.332769
i32toa_sequential,sse2,9,13.551283
i32toa_sequential,sse2,10,13.915256
i32toa_random,sse2,0,25.835940
i32toa_sequential,vc,1,13.643234
i32toa_sequential,vc,2,16.351958
i32toa_sequential,vc,3,21.098930
i32toa_sequential,vc,4,27.615959
i32toa_sequential,vc,5,35.385821
i32toa_sequential,vc,6,50.845087
i32toa_sequential,vc,7,58.128375
i32toa_sequential,vc,8,67.924991
i32toa_sequential,vc,9,78.648780
i32toa_sequential,vc,10,87.878364
i32toa_random,vc,0,74.632818
u64toa_sequential,null,1,3.126335
u64toa_sequential,null,2,3.279587
u64toa_sequential,null,3,3.214455
u64toa_sequential,null,4,3.206792
u64toa_sequential,null,5,3.206792
u64toa_sequential,null,6,3.206792
u64toa_sequential,null,7,3.206792
u64toa_sequential,null,8,3.206792
u64toa_sequential,null,9,3.206792
u64toa_sequential,null,10,3.206792
u64toa_sequential,null,11,3.206792
u64toa_sequential,null,12,3.206792
u64toa_sequential,null,13,3.206792
u64toa_sequential,null,14,3.206792
u64toa_sequential,null,15,3.206792
u64toa_sequential,null,16,3.206792
u64toa_sequential,null,17,3.206792
u64toa_sequential,null,18,3.206792
u64toa_sequential,null,19,3.206792
u64toa_sequential,null,20,3.206792
u64toa_random,null,0,2.505474
u64toa_sequential,branchlut,1,6.812039
u64toa_sequential,branchlut,2,6.877171
u64toa_sequential,branchlut,3,6.992109
u64toa_sequential,branchlut,4,7.486346
u64toa_sequential,branchlut,5,12.149030
u64toa_sequential,branchlut,6,12.083898
u64toa_sequential,branchlut,7,12.884638
u64toa_sequential,branchlut,8,13.302249
u64toa_sequential,branchlut,9,34.991198
u64toa_sequential,branchlut,10,35.378158
u64toa_sequential,branchlut,11,37.998762
u64toa_sequential,branchlut,12,38.037075
u64toa_sequential,branchlut,13,38.745865
u64toa_sequential,branchlut,14,40.891389
u64toa_sequential,branchlut,15,40.546572
u64toa_sequential,branchlut,16,41.619334
u64toa_sequential,branchlut,17,90.008563
u64toa_sequential,branchlut,18,90.820797
u64toa_sequential,branchlut,19,91.150288
u64toa_sequential,branchlut,20,91.533417
u64toa_random,branchlut,0,56.178247
u64toa_sequential,count,1,19.895904
u64toa_sequential,count,2,28.489494
u64toa_sequential,count,3,38.144352
u64toa_sequential,count,4,48.550143
u64toa_sequential,count,5,59.258607
u64toa_sequential,count,6,69.959407
u64toa_sequential,count,7,81.051000
u64toa_sequential,count,8,92.364808
u64toa_sequential,count,9,104.663258
u64toa_sequential,count,10,116.632217
u64toa_sequential,count,11,129.658613
u64toa_sequential,count,12,143.045150
u64toa_sequential,count,13,156.194147
u64toa_sequential,count,14,171.025082
u64toa_sequential,count,15,186.882803
u64toa_sequential,count,16,204.629351
u64toa_sequential,count,17,230.172581
u64toa_sequential,count,18,252.099070
u64toa_sequential,count,19,267.983610
u64toa_sequential,count,20,282.492716
u64toa_random,count,0,166.743037
u64toa_sequential,countlut,1,12.149030
u64toa_sequential,countlut,2,9.566738
u64toa_sequential,countlut,3,10.639500
u64toa_sequential,countlut,4,10.946004
u64toa_sequential,countlut,5,12.846325
u64toa_sequential,countlut,6,12.831000
u64toa_sequential,countlut,7,15.271533
u64toa_sequential,countlut,8,16.953471
u64toa_sequential,countlut,9,32.883987
u64toa_sequential,countlut,10,34.305396
u64toa_sequential,countlut,11,37.788041
u64toa_sequential,countlut,12,38.102207
u64toa_sequential,countlut,13,41.025484
u64toa_sequential,countlut,14,40.991002
u64toa_sequential,countlut,15,42.741903
u64toa_sequential,countlut,16,43.351079
u64toa_sequential,countlut,17,62.894503
u64toa_sequential,countlut,18,63.971097
u64toa_sequential,countlut,19,65.189448
u64toa_sequential,countlut,20,66.515075
u64toa_random,countlut,0,49.637272
u64toa_sequential,lut,1,8.593590
u64toa_sequential,lut,2,10.106951
u64toa_sequential,lut,3,18.941912
u64toa_sequential,lut,4,22.876650
u64toa_sequential,lut,5,32.784373
u64toa_sequential,lut,6,34.922234
u64toa_sequential,lut,7,45.875901
u64toa_sequential,lut,8,46.852880
u64toa_sequential,lut,9,57.576669
u64toa_sequential,lut,10,60.078503
u64toa_sequential,lut,11,73.288801
u64toa_sequential,lut,12,75.782973
u64toa_sequential,lut,13,90.797809
u64toa_sequential,lut,14,94.609946
u64toa_sequential,lut,15,105.111519
u64toa_sequential,lut,16,107.253212
u64toa_sequential,lut,17,121.976870
u64toa_sequential,lut,18,124.428898
u64toa_sequential,lut,19,139.152556
u64toa_sequential,lut,20,142.267397
u64toa_random,lut,0,107.700516
u64toa_sequential,naive,1,16.282995
u64toa_sequential,naive,2,29.393679
u64toa_sequential,naive,3,40.780281
u64toa_sequential,naive,4,52.358448
u64toa_sequential,naive,5,65.082172
u64toa_sequential,naive,6,80.028045
u64toa_sequential,naive,7,87.426272
u64toa_sequential,naive,8,101.992847
u64toa_sequential,naive,9,112.850731
u64toa_sequential,naive,10,125.448022
u64toa_sequential,naive,11,140.125705
u64toa_sequential,naive,12,154.067779
u64toa_sequential,naive,13,168.446621
u64toa_sequential,naive,14,183.672179
u64toa_sequential,naive,15,198.326874
u64toa_sequential,naive,16,219.203589
u64toa_sequential,naive,17,246.957475
u64toa_sequential,naive,18,267.895490
u64toa_sequential,naive,19,283.404563
u64toa_sequential,naive,20,301.319689
u64toa_random,naive,0,180.906561
u64toa_sequential,sprintf,1,129.432566
u64toa_sequential,sprintf,2,156.014076
u64toa_sequential,sprintf,3,176.113038
u64toa_sequential,sprintf,4,201.809520
u64toa_sequential,sprintf,5,226.636297
u64toa_sequential,sprintf,6,251.486063
u64toa_sequential,sprintf,7,276.922016
u64toa_sequential,sprintf,8,298.859999
u64toa_sequential,sprintf,9,318.809541
u64toa_sequential,sprintf,10,343.494561
u64toa_sequential,sprintf,11,372.003211
u64toa_sequential,sprintf,12,395.987104
u64toa_sequential,sprintf,13,421.721898
u64toa_sequential,sprintf,14,446.648289
u64toa_sequential,sprintf,15,475.773777
u64toa_sequential,sprintf,16,499.225121
u64toa_sequential,sprintf,17,525.500127
u64toa_sequential,sprintf,18,548.120080
u64toa_sequential,sprintf,19,576.663212
u64toa_sequential,sprintf,20,605.336608
u64toa_random,sprintf,0,380.570556
u64toa_sequential,sse2,1,6.808207
u64toa_sequential,sse2,2,6.892496
u64toa_sequential,sse2,3,7.271794
u64toa_sequential,sse2,4,7.126205
u64toa_sequential,sse2,5,13.643234
u64toa_sequential,sse2,6,14.761971
u64toa_sequential,sse2,7,14.535925
u64toa_sequential,sse2,8,15.102956
u64toa_sequential,sse2,9,36.431764
u64toa_sequential,sse2,10,36.420270
u64toa_sequential,sse2,11,37.845511
u64toa_sequential,sse2,12,37.860836
u64toa_sequential,sse2,13,38.220977
u64toa_sequential,sse2,14,38.588782
u64toa_sequential,sse2,15,38.948923
u64toa_sequential,sse2,16,39.048537
u64toa_sequential,sse2,17,80.775147
u64toa_sequential,sse2,18,80.422668
u64toa_sequential,sse2,19,80.794304
u64toa_sequential,sse2,20,82.127594
u64toa_random,sse2,0,53.256120
u64toa_sequential,vc,1,28.500988
u64toa_sequential,vc,2,42.443062
u64toa_sequential,vc,3,57.967461
u64toa_sequential,vc,4,75.078015
u64toa_sequential,vc,5,88.625466
u64toa_sequential,vc,6,105.031062
u64toa_sequential,vc,7,118.030639
u64toa_sequential,vc,8,134.386428
u64toa_sequential,vc,9,150.604291
u64toa_sequential,vc,10,164.063622
u64toa_sequential,vc,11,181.404054
u64toa_sequential,vc,12,194.932349
u64toa_sequential,vc,13,212.533308
u64toa_sequential,vc,14,229.789451
u64toa_sequential,vc,15,243.130013
u64toa_sequential,vc,16,270.531419
u64toa_sequential,vc,17,283.140204
u64toa_sequential,vc,18,304.618432
u64toa_sequential,vc,19,317.767429
u64toa_sequential,vc,20,335.927757
u64toa_random,vc,0,196.987646
i64toa_sequential,null,1,6.494041
i64toa_sequential,null,2,6.524692
i64toa_sequential,null,3,6.421247
i64toa_sequential,null,4,6.413584
i64toa_sequential,null,5,6.413584
i64toa_sequential,null,6,6.413584
i64toa_sequential,null,7,6.413584
i64toa_sequential,null,8,6.413584
i64toa_sequential,null,9,6.413584
i64toa_sequential,null,10,6.413584
i64toa_sequential,null,11,7.482515
i64toa_sequential,null,12,7.497840
i64toa_sequential,null,13,7.482515
i64toa_sequential,null,14,7.482515
i64toa_sequential,null,15,7.482515
i64toa_sequential,null,16,7.486346
i64toa_sequential,null,17,7.482515
i64toa_sequential,null,18,7.482515
i64toa_sequential,null,19,7.482515
i64toa_sequential,null,20,7.482515
i64toa_random,null,0,2.145907
i64toa_sequential,branchlut,1,14.313710
i64toa_sequential,branchlut,2,14.321373
i64toa_sequential,branchlut,3,15.018668
i64toa_sequential,branchlut,4,15.601024
i64toa_sequential,branchlut,5,20.704307
i64toa_sequential,branchlut,6,20.616187
i64toa_sequential,branchlut,7,21.271338
i64toa_sequential,branchlut,8,21.754081
i64toa_sequential,branchlut,9,44.550273
i64toa_sequential,branchlut,10,44.688200
i64toa_sequential,branchlut,11,47.841354
i64toa_sequential,branchlut,12,50.216755
i64toa_sequential,branchlut,13,50.285719
i64toa_sequential,branchlut,14,50.381501
i64toa_sequential,branchlut,15,52.136233
i64toa_sequential,branchlut,16,52.573000
i64toa_sequential,branchlut,17,101.092493
i64toa_sequential,branchlut,18,99.939274
i64toa_sequential,branchlut,19,100.536956
i64toa_sequential,branchlut,20,104.218828
i64toa_random,branchlut,0,63.065188
i64toa_sequential,count,1,28.213641
i64toa_sequential,count,2,38.473843
i64toa_sequential,count,3,47.090420
i64toa_sequential,count,4,57.729921
i64toa_sequential,count,5,68.036098
i64toa_sequential,count,6,78.974440
i64toa_sequential,count,7,89.924274
i64toa_sequential,count,8,102.027329
i64toa_sequential,count,9,113.344968
i64toa_sequential,count,10,126.310063
i64toa_sequential,count,11,138.999305
i64toa_sequential,count,12,153.707638
i64toa_sequential,count,13,167.393016
i64toa_sequential,count,14,198.326874
i64toa_sequential,count,15,194.890205
i64toa_sequential,count,16,214.701820
i64toa_sequential,count,17,241.080271
i64toa_sequential,count,18,261.880360
i64toa_sequential,count,19,277.818538
i64toa_sequential,count,20,284.814479
i64toa_random,count,0,169.912666
i64toa_sequential,countlut,1,18.780998
i64toa_sequential,countlut,2,17.926619
i64toa_sequential,countlut,3,19.984024
i64toa_sequential,countlut,4,20.439947
i64toa_sequential,countlut,5,22.271305
i64toa_sequential,countlut,6,23.137178
i64toa_sequential,countlut,7,23.945580
i64toa_sequential,countlut,8,24.309553
i64toa_sequential,countlut,9,42.171040
i64toa_sequential,countlut,10,43.944929
i64toa_sequential,countlut,11,47.347117
i64toa_sequential,countlut,12,48.155520
i64toa_sequential,countlut,13,48.803008
i64toa_sequential,countlut,14,49.718687
i64toa_sequential,countlut,15,52.067270
i64toa_sequential,countlut,16,53.458029
i64toa_sequential,countlut,17,73.242825
i64toa_sequential,countlut,18,74.844306
i64toa_sequential,countlut,19,75.664203
i64toa_sequential,countlut,20,75.966875
i64toa_random,countlut,0,55.869062
i64toa_sequential,lut,1,15.754276
i64toa_sequential,lut,2,17.267637
i64toa_sequential,lut,3,28.765347
i64toa_sequential,lut,4,30.795932
i64toa_sequential,lut,5,40.784112
i64toa_sequential,lut,6,43.132695
i64toa_sequential,lut,7,53.021262
i64toa_sequential,lut,8,56.059477
i64toa_sequential,lut,9,66.308185
i64toa_sequential,lut,10,68.783201
i64toa_sequential,lut,11,83.043273
i64toa_sequential,lut,12,85.273085
i64toa_sequential,lut,13,99.207497
i64toa_sequential,lut,14,103.061778
i64toa_sequential,lut,15,114.237659
i64toa_sequential,lut,16,116.727999
i64toa_sequential,lut,17,141.267430
i64toa_sequential,lut,18,147.623545
i64toa_sequential,lut,19,147.665689
i64toa_sequential,lut,20,149.458734
i64toa_random,lut,0,114.058929
i64toa_sequential,naive,1,25.581542
i64toa_sequential,naive,2,36.968145
i64toa_sequential,naive,3,48.335591
i64toa_sequential,naive,4,59.178149
i64toa_sequential,naive,5,71.239059
i64toa_sequential,naive,6,85.640889
i64toa_sequential,naive,7,93.977782
i64toa_sequential,naive,8,106.598061
i64toa_sequential,naive,9,119.616794
i64toa_sequential,naive,10,131.616403
i64toa_sequential,naive,11,147.861085
i64toa_sequential,naive,12,162.017712
i64toa_sequential,naive,13,176.783515
i64toa_sequential,naive,14,192.112517
i64toa_sequential,naive,15,206.893645
i64toa_sequential,naive,16,228.371873
i64toa_sequential,naive,17,255.570221
i64toa_sequential,naive,18,277.764900
i64toa_sequential,naive,19,292.411933
i64toa_sequential,naive,20,298.978769
i64toa_random,naive,0,185.527483
i64toa_sequential,sprintf,1,141.140997
i64toa_sequential,sprintf,2,165.327949
i64toa_sequential,sprintf,3,192.909426
i64toa_sequential,sprintf,4,215.893352
i64toa_sequential,sprintf,5,241.831205
i64toa_sequential,sprintf,6,266.615838
i64toa_sequential,sprintf,7,299.959580
i64toa_sequential,sprintf,8,325.862951
i64toa_sequential,sprintf,9,348.839214
i64toa_sequential,sprintf,10,370.715896
i64toa_sequential,sprintf,11,395.757226
i64toa_sequential,sprintf,12,422.901936
i64toa_sequential,sprintf,13,445.146422
i64toa_sequential,sprintf,14,476.398278
i64toa_sequential,sprintf,15,498.987581
i64toa_sequential,sprintf,16,528.511524
i64toa_sequential,sprintf,17,551.231090
i64toa_sequential,sprintf,18,579.383430
i64toa_sequential,sprintf,19,602.903737
i64toa_sequential,sprintf,20,612.064358
i64toa_random,sprintf,0,393.929125
i64toa_sequential,sse2,1,16.179550
i64toa_sequential,sse2,2,16.328970
i64toa_sequential,sse2,3,15.991816
i64toa_sequential,sse2,4,16.378777
i64toa_sequential,sse2,5,22.983926
i64toa_sequential,sse2,6,24.934054
i64toa_sequential,sse2,7,26.753918
i64toa_sequential,sse2,8,28.094870
i64toa_sequential,sse2,9,45.136461
i64toa_sequential,sse2,10,45.101979
i64toa_sequential,sse2,11,47.883498
i64toa_sequential,sse2,12,48.121038
i64toa_sequential,sse2,13,48.247471
i64toa_sequential,sse2,14,48.684238
i64toa_sequential,sse2,15,48.971585
i64toa_sequential,sse2,16,49.105680
i64toa_sequential,sse2,17,90.081358
i64toa_sequential,sse2,18,89.885962
i64toa_sequential,sse2,19,90.418511
i64toa_sequential,sse2,20,93.426076
i64toa_random,sse2,0,63.297172
i64toa_sequential,vc,1,35.132955
i64toa_sequential,vc,2,49.166981
i64toa_sequential,vc,3,64.702874
i64toa_sequential,vc,4,81.625694
i64toa_sequential,vc,5,94.069733
i64toa_sequential,vc,6,111.816282
i64toa_sequential,vc,7,126.693192
i64toa_sequential,vc,8,144.163887
i64toa_sequential,vc,9,156.922093
i64toa_sequential,vc,10,172.434997
i64toa_sequential,vc,11,188.917219
i64toa_sequential,vc,12,205.510549
i64toa_sequential,vc,13,222.364406
i64toa_sequential,vc,14,239.034361
i64toa_sequential,vc,15,256.098939
i64toa_sequential,vc,16,277.619311
i64toa_sequential,vc,17,292.561353
i64toa_sequential,vc,18,312.690966
i64toa_sequential,vc,19,327.985487
i64toa_sequential,vc,20,331.617553
i64toa_random,vc,0,206.258225
</textarea>
</div>
<div class="row" id="downloadDD" style="display: none">
<div class="btn-group pull-right" >
    <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-picture"></span></button>
    <ul class="dropdown-menu">
        <li><a tabindex="-1" href="#" dltype="image/jpeg">JPEG</a></li>
        <li><a tabindex="-1" href="#" dltype="image/png">PNG</a></li>
        <li><a tabindex="-1" href="#" dltype="application/pdf">PDF</a></li>
        <li><a tabindex="-1" href="#" dltype="image/svg+xml">SVG</a></li>
    </ul>
</div>
</div>
<div class="row" id="showMD" style="display: none">
<div class="btn-group pull-right" >
    <button class="btn dropdown-toggle" data-toggle="collapse"><span class="glyphicon glyphicon-list-alt"></span></button>
</div>
<br/>
<br/>
<div class="collapse">
<textarea class="form-control" rows="5" readonly>
</textarea>
</div>
</div>
<form method="post" action="http://export.highcharts.com/" id="imageGetForm">
    <input type="hidden" name="filename" id="imageFilename" value="" />
    <input type="hidden" name="type" id="imageGetFormTYPE" value="" />
    <input type="hidden" name="width" value="900" />
    <input type="hidden" name="svg" value="" id="imageGetFormSVG" />
</form>
</div>
</body>
</html>